package com.iweb.service;

import com.iweb.dao.UserDao;
import com.iweb.pojo.User;
import com.iweb.utils.IdWorker;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;

@Slf4j
public class UserService {
    public void saveUser(User user) {
        UserDao userDao = new UserDao();
        //1. 校验手机号是否已注册，如果没有则继续，
        User userData = userDao.selectUserByPhone(user.getPhone());
        if (userData != null) {
            //如果注册则返回用户手机号已经使用
            log.info("手机号{}已使用", user.getPhone());
            throw new RuntimeException(String.format("手机号%s已使用", user.getPhone()));
        }
        //2. 设定主键 ： 如果在多用户的情况下 主键有可能会重复 这里使用id生成器
        user.setId(IdWorker.id());
        //3. 补全信息：设定用户的创建时间
        user.setCreateTime(new Date());
        //4. 保存用户
        userDao.save(user);
    }

    public User findUserByPhone(String phone) {
        // 调用 UserDao 的 selectUserByPhone
        UserDao userDao = new UserDao();
        User user = userDao.selectUserByPhone(phone);
        return user;
    }

    public User findUserToLogin(User user) {
        // 调用查询接口
        UserDao userDao = new UserDao();
        return userDao.selectUserByPhoneOrEmail(user);
    }

    public User findUserInfo(String userId) {
        return new UserDao().findById(userId);
    }

    public User updateEmail(String userId, String email) {
        UserDao userDao = new UserDao();
        // 更新邮箱
        userDao.updateEmailById(userId, email);
        // 获取更新后的用户信息
        User user = userDao.findById(userId);
        // 返回更新后的用户信息
        return user;
    }

    public void updatePassword(String userId, String password) {
        UserDao userDao = new UserDao();
        userDao.updatePasswordById(userId, password);
    }
}
